export default {
	/**
	 * url转对象
	 * @param {Object} url
	 */
	urlParamsToObj(url) {
	  const index = url.indexOf('?')
	  const obj = {}
	  let queryStr = url
	  if (index > -1) {
		  queryStr = url.slice(index + 1)
	  }
	  const arr = queryStr.split('&')
	  for (var item of arr) {
	    const keyValue = item.split('=')
	    obj[keyValue[0]] = keyValue[1]
	  }
	  return obj
	},
	/**
	 * 对象转url参数
	 * @param {*} data,对象
	 * @param {*} isPrefix,是否自动加上"?"
	 */
	queryParams(data = {}, isPrefix = true, arrayFormat = 'brackets') {
		const prefix = isPrefix ? '?' : ''
		const _result = []
		if (['indices', 'brackets', 'repeat', 'comma'].indexOf(arrayFormat) == -1) arrayFormat = 'brackets'
		for (const key in data) {
			const value = data[key]
			// 去掉为空的参数
			if (['', undefined, null].indexOf(value) >= 0) {
				continue
			}
			// 如果值为数组，另行处理
			if (value.constructor === Array) {
				// e.g. {ids: [1, 2, 3]}
				switch (arrayFormat) {
					case 'indices':
						// 结果: ids[0]=1&ids[1]=2&ids[2]=3
						for (let i = 0; i < value.length; i++) {
							_result.push(`${key}[${i}]=${value[i]}`)
						}
						break
					case 'brackets':
						// 结果: ids[]=1&ids[]=2&ids[]=3
						value.forEach((_value) => {
							_result.push(`${key}[]=${_value}`)
						})
						break
					case 'repeat':
						// 结果: ids=1&ids=2&ids=3
						value.forEach((_value) => {
							_result.push(`${key}=${_value}`)
						})
						break
					case 'comma':
						// 结果: ids=1,2,3
						let commaStr = ''
						value.forEach((_value) => {
							commaStr += (commaStr ? ',' : '') + _value
						})
						_result.push(`${key}=${commaStr}`)
						break
					default:
						value.forEach((_value) => {
							_result.push(`${key}[]=${_value}`)
						})
				}
			} else {
				_result.push(`${key}=${value}`)
			}
		}
		return _result.length ? prefix + _result.join('&') : ''
	},
	/**
	 * 链接参数封装
	 * @param {String} url 链接
	 * @param {Object} params 参数map
	 * @author Jie.
	 */
	getLink(url, params) {
		if (params) {
			let paramStr = ''
			for (let name in params) {
				paramStr += `&${name}=${params[name]}`
			}
			if (paramStr) {
				url += `?${paramStr.substr(1)}`
			}
		}
		return url
	},
	/**
	 * 将参数解析为URL参数
	 * @param {Object} obj
	 */
	toParams(obj) {
		var param = ''
		for (const name in obj) {
			if (typeof obj[name] != 'function') {
				param += '&' + name + '=' + encodeURIComponent(obj[name])
			} else {
				param += '&' + name + '=' + obj[name]()
			}
		}
		return param.substring(1)
	},
	/**
	 * 格式化URL
	 * @param {String} url 原地址
	 * @param {Object} hasToken 是否包含token
	 */
	rendUrl(url, hasToken) {
		let bsessionid = uni.$as.getBsessionid()
		let token = uni.$as.getToken()
		let params = { bsessionid }
		if (hasToken && token) {
			params['token'] = token
		}
		return this.getLink(url, params)
	},
	/**
	 * 转化为x5的
	 * */
	getX5Url(x5Url){
		if(!x5Url) return ''
		return `${uni.$as.rootPath}${uni.$as.api.get('middleware')}`
			+`?bsessionid=${uni.$as.getBsessionid()}&device=m#!(${x5Url})`
	}
}
